import { getUserInfoAPI, getUserProfileAPI } from '@/api/user.js'
var initState = {
    // token 的信息对象
    tokenInfo: {},
    // 用户的基本信息
    userInfo: {},
    // 用户的简介信息
    userProfile: {}
}
const stateStr = localStorage.getItem('state')
// console.log(JSON.parse(stateStr))
if (stateStr) {
    // 加载本地的数据
    initState = JSON.parse(stateStr)
}
export default {
    // 开启命名空间
    namespaced: true,
    // state 数据
    state: () => (initState),
    // 方法
    mutations: {
        // 将 state 持久化存储到本地
        saveStateToStorage(state) {
            // console.log("存储")
            localStorage.setItem('state', JSON.stringify(state))
        },
        // 更新 tokenInfo 数据的方法
        updateTokenInfo(state, payload) {
            console.log(payload)
            state.tokenInfo = payload
            this.commit('m_user/saveStateToStorage')
        },
        // 更新 userInfo 数据的方法
        updateUserInfo(state, payload) {
            // 1. 把用户信息转存到 state 中
            state.userInfo = payload
            // 将最新的 state 对象持久化存储到本地
            this.commit('m_user/saveStateToStorage')
        },
        // 更新 userProfile 的方法
        updateUserProfile(state, payload) {
            state.userProfile = payload
            this.commit('m_user/saveStateToStorage')
        },
        // 清空 vuex 和本地的数据
        cleanState(state) {
            // 1. 清空 vuex 中的数据
            state.tokenInfo = {}
            state.userInfo = {}
            state.userProfile = {}
            // 2. 将清空后的 state 存储到本地
            localStorage.setItem('state', JSON.stringify(state))
            this.commit('m_user/saveStateToStorage')
        },
    },
    actions: {
        // 初始化用户的基本信息
        async initUserInfo({commit}) {
            // 调用 API 接口
            const { data: res } = await getUserInfoAPI()
            if (res.message === 'OK') {
                // TODO：把数据转交给 Mutation 方法   ctx.commit('Mutation方法名')
                commit('updateUserInfo', res.data)
            }
        },
        // 初始化用户的简介信息
        async initUserProfile({commit}) {
            // 调用 API 接口
            const { data: res } = await getUserProfileAPI()
            if (res.message === 'OK') {
                // TODO：把请求到的数据转交给 Mutation 方法   ctx.commit('Mutation方法名')
                commit('updateUserProfile', res.data)
            }
        }
    },
    getters: {
        // 用户头像的计算属性
        userAvatar(state) {
            // 默认的头像地址
            let imgSrc = 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-9110719a-6813-4d63-b24f-d884e55915ee/0c574edb-f13c-410f-9c83-fbd49953b760.jpg'
            // 如果用户信息对象中包含 photo 属性的值，则为 imgSrc 重新赋值
            if (state.userInfo.photo) {
                imgSrc = state.userInfo.imgSrc
            }
            return imgSrc
        }
    }
}
